package br.org.isvi.interpretador.portugol.access;

import java.util.List;

import br.org.isvi.interpretador.portugol.model.Aluno;
import br.org.isvi.interpretador.portugol.model.Aula;
import br.org.isvi.interpretador.portugol.model.Erro;
import br.org.isvi.interpretador.portugol.model.Exercicio;
import br.org.isvi.interpretador.portugol.model.Nivel;
import br.org.isvi.interpretador.portugol.model.Professor;
import br.org.isvi.interpretador.portugol.model.SolucaoAluno;
import br.org.isvi.interpretador.portugol.model.Turma;

public class IPVBusinessFacade {


	public static List<Erro> obterTodosErro() {
		return new ErroDAO().obterTodos();
	}

	public static List<Aluno> obterTodosAluno() {
		return new AlunoDAO().obterTodos();
	}

	public static List<Aula> obterTodosAula() {
		return new AulaDAO().obterTodos();
	}

	public static List<Exercicio> obterTodosExercicio() {
		return new ExercicioDAO().obterTodos();
	}

	public static List<Exercicio> obterTodosExerciciosPorAula(Aula model) {
		return new ExercicioDAO().obterPorAula(model);
	}
	
	public static List<Exercicio> obterTodosExerciciosPorNivel(Nivel model) {
		return new ExercicioDAO().obterPorNivel(model);
	}
	
	public static List<Exercicio> obterTodosExerciciosAvulsosPorNivel(Nivel model) {
		return new ExercicioDAO().obterAvulsosPorNivel(model);
	}
	
	public static List<Nivel> obterTodosNiveis() {
		return new NivelDAO().obterTodos();
	}


	public static List<Professor> obterTodosProfessores() {
		return new ProfessorDAO().obterTodos();
	}

	public static List<SolucaoAluno> obterSolucaoAlunoPorTurma(Turma turma) {
		return new SolucaoAlunoDAO().obterSolucaoAlunoPorTurma(turma);
	}
	
	public static List<SolucaoAluno> obterTodosSolucoes(SolucaoAluno model) {
		return new SolucaoAlunoDAO().obterTodos();
	}

	
	public static SolucaoAluno obterPorAlunoExercicioAula(Aluno al, Exercicio ex, Aula au) {
		return new SolucaoAlunoDAO().obterPorAlunoExercicioAula(al, ex, au);
	}
	
	
	public static List<Turma> obterTodosTurma() {
		return new TurmaDAO().obterTodos();
	}
	
	public static void persistir() {
		AbstractDAO.getCtx().commitChanges();
	}

}
